<?php
/**
 * Controller_Article
 *
 * Класс Controller_Article отвечает за обработку страниц, связанных со статьями
 *
 * @author zhavadik@gmail.com
 * @version 
 */

class Controller_Article extends Controller_Base {
	/**
	 * Выбор действия по URL
	 */
	public function action() {
		Service_Debug::setDebug();
		$this->addCrumb('Статьи', W_ABSPATH . 'article/');
		
		switch ($this->arrRequest[1]) {
			case '':
				$this->actionArticleList(); 
				break;
			case 'add':
				if (!SimpleAdministration::isAdmin()) $this->setError(403);
				$this->actionAddArticle(); 
				break;
			case 'edit':
				if (!is_numeric($this->arrRequest[2])) $this->setError(404);
				else {
				$objArticle = new Article($this->arrRequest[2]);
				if ($objArticle->id) {
					if (!SimpleAdministration::isAuthorOrAdmin($objArticle->getField('ID_user'), true)) $this->setError(403);
					$this->actionEdit($objArticle);
				}
					else $this->setError(404);
				}
				break;
			default:
				$objArticle = new Article();
				$objArticle->find(('first'), array(
				'conditions' => " `article_alias` = '" . $this->arrRequest[1] . "'
				"
				));

				if ($objArticle->id) {
					echo $this->oneArticle($objArticle); 
				}
				else $this->setError(404);
				break;
		}
	}
 /**
   * Выводит список статей
   * 
   */
	public function actionArticleList() {
		$objArticle = new Article();
		$arrArticle = $objArticle->find('all', array('order' => '`article_name` ASC'));
		$objUser = new User_User();
   	$arrUsers = $objUser->find('all', array());
   
		$objDB = Service_Database::instance();
    
    $objViewArticle = new View_Article();
    $this->pageHead = 'Статьи';
    $this->title = 'Список статей';
    $this->addCss('my.css');
    $this->addUrl = W_ABSPATH . 'article/add/';
    	
    $this->showHeader();
    $objViewArticle->showArticleList($arrArticle);
		$this->showFooter();
	}
	
  /**
   * Выводит страницу добавления статьи
   * 
   */
  public function actionAddArticle() {
  	if (isset($_POST['Article'])) {
			$objArticle = new Article($_POST['Article']);
			if ($objArticle->save()) User_Session::moveTo(W_ABSPATH .  'article/', 'Статья успешно добавлена', 1);
		}
		else $objArticle = new Article();
		  	
  	$objViewArticle = new View_Article();
  	$this->pageHead = $this->title = 'Добавление статьи';
    $this->addWysiwygMetas();
    $this->addCrumb('Добавление статьи');
    
  	$this->showHeader();
    $objViewArticle->showEditFormArticle($objArticle);
    $this->showFooter();
  }	
  
	public function  setPageHead($pageHead) {
    $this->pageHead = $pageHead;
	}
  
/**
   * Выводит страницу редактирования статьи
   * 
   * @param Article $objArticle - объект статьи для редактирования
   */
  public function actionEdit(Article $objArticle) {
		if (isset($_POST['Article'])) {
			$objArticle = new Article($_POST['Article']);
			if ($objArticle->save()) User_Session::moveTo(W_ABSPATH . 'article/', 'Статья успешно редактирована', 1);
		}
		  	
  	$objViewArticle = new View_Article();
  	$this->pageHead = $this->title = 'Редактирование статьи "' . $objArticle->getField('article_name') . '"';
  	$this->addUrl = W_ABSPATH . 'article/add/';
  	$this->addWysiwygMetas();
  	$this->addCrumb('Редактирование статьи');
    
  	$this->showHeader();
    //$objViewArticle->showEditFormArticle($objArticle);
    //$this->showFooter();
  }

  
//Функция вывода статьи
	public function oneArticle (Article $objArticle) {
		$objViewArticle = new View_Article();
		$this->pageHead = $objArticle->getField('article_name');;
		$this->showHeader();
		$objViewArticle->showArticle($objArticle, $this->pageHead);
		$this->showFooter();	
	}	
}
?>